home *** CD-ROM | disk | FTP | other *** search
Wrap
(*************************************************** Ant Movie Catalog importation script www.antp.be/software/moviecatalog/ [Infos] Authors=Antoine Potten Title=DVDFR.com Description=Importation des donnΘes et image de DVDFR.com (pour utilisation personnelle uniquement !) Site=www.dvdfr.com Language=FR Version=1.0 Requires=3.5.0 Comments=Merci α l'Θquipe de DVDFR de fournir un accΦs simplifiΘ α leurs donnΘes.|Pour rappel, ces donnΘes sont accessibles uniquement pour une utilisation personnelle ; en aucun cas elles ne peuvent Ωtre utilisΘes commerciallement ou publiquement !|L'ancienne version du script avait ΘtΘ dΘveloppΘe par Antoine Potten et Fabrice Fert. License=Ce script permet de rΘcupΘrer les donnΘes du site de DVDFR pour une utilisation personnelle uniquement.|Ces donnΘes ne peuvent pas Ωtre rΘcupΘrΘes ni exploitΘes dans un but commercial ou mΩme pour une utilisation publique.|En utilisant ce script vous dΘclarez accepter ces conditions et endosser toute responsabilitΘ dans la maniΦre dont vous utilisez ces donnΘes. GetInfo=1 [Options] ListePays=1|1|0=Ne prend que le premier pays de la liste|1=Prend la liste de tous les pays, sΘparΘs par des virgules ListeCategories=1|1|0=Ne prend que la premiΦre catΘgorie de la liste|1=Prend la liste de toutes les catΘgories, sΘparΘes par des virgules Bonus=1|1|0=N'importe pas la liste des bonus|1=Importe la liste des bonus dans le champ Commentaires ***************************************************) program DVDFR; var MovieName: string; // *** tΘlΘchargement et analyse des pages, contruction de la liste de choix de titres procedure AnalyzePage(Address: string); var xml: TJvSimpleXml; CurItem: TJvSimpleXmlElem; i: Integer; s1, s2: string; begin xml := TJvSimpleXml.Create(nil); xml.LoadFromString(GetPage(Address)); //xml.LoadFromFile('T:\dvd2.php.xml'); if xml.Root.Name = 'dvds' then begin if xml.Root.Items.Count = 0 then begin ShowInformation('Aucun film trouvΘ pour "' + MovieName + '"'); xml.Free; Exit; end; PickTreeClear; PickTreeAdd('RΘsultats de la recherche de "' + MovieName + '"', ''); for i := 0 to xml.Root.Items.Count-1 do begin CurItem := xml.Root.Items.GetItem(i); s1 := CurItem.Items.GetItemNamed('titres').Items.GetItemNamed('fr').Value; s2 := CurItem.Items.GetItemNamed('titres').Items.GetItemNamed('vo').Value; if s2 <> '' then s1 := s1 + ' (' + s2 + ')'; if CurItem.Items.GetItemNamed('stars').Items.Count > 0 then begin s2 := CurItem.Items.GetItemNamed('stars').Items.GetItem(0).Value; if s2 <> '' then s1 := s1 + ' / ' + s2; end; s2 := CurItem.Items.GetItemNamed('edition').Value; if s2 <> '' then s1 := s1 + ' / ' + s2; s2 := CurItem.Items.GetItemNamed('editeur').Value; if s2 <> '' then s1 := s1 + ' / ' + s2; PickTreeAdd(s1, 'http://www.dvdfr.com/api/dvd.php?id=' + CurItem.Items.GetItemNamed('id').Value); end; if PickTreeExec(Address) then AnalyzePage(Address); end else if xml.Root.Name = 'dvd' then begin AnalyzeMoviePage(xml); end; if xml.Root.Name = 'errors' then begin ShowError(xml.Root.Items.GetItemNamed('error').Items.GetItemNamed('message').Value); end; xml.Free; end; // *** analyse d'une fiche de film procedure AnalyzeMoviePage(xml: TJvSimpleXml); var Items: TJvSimpleXmlElems; CurItem: TJvSimpleXmlElem; s1, s2: string; i: Integer; begin Items := xml.Root.Items; SetField(fieldURL, Items.GetItemNamed('url').Value); s1 := Items.GetItemNamed('titres').Items.GetItemNamed('fr').Value; s2 := Items.GetItemNamed('titres').Items.GetItemNamed('vo').Value; if s2 = '' then SetField(fieldOriginalTitle, s1) else begin SetField(fieldOriginalTitle, s2); SetField(fieldTranslatedTitle, s1); end; if CanSetField(fieldCountry) then begin s1 := ''; CurItem := Items.GetItemNamed('listePays'); for i := 0 to CurItem.Items.Count-1 do begin if s1 <> '' then begin if GetOption('ListePays') = 0 then Break else s1 := s1 + ', '; end; s1 := s1 + CurItem.Items.GetItem(i).Value; end; SetField(fieldCountry, s1); end; SetField(fieldYear, Items.GetItemNamed('annee').Value); s1 := StringReplace(StringReplace(Items.GetItemNamed('synopsis').Value, #10, ' '), #13, ''); SetField(fieldDescription, s1); SetField(fieldLength, Items.GetItemNamed('duree').Value); if CanSetField(fieldVideoBitrate) then begin CurItem := Items.GetItemNamed('bitrate'); s1 := CurItem.Value; if CurItem.Properties.GetItemNamed('unite').Value = 'mbits/s' then s1 := FloatToStr(StrToFloat(StringReplace(s1, ',', '.')) * 1000.0); SetField(fieldVideoBitrate, s1); end; SetField(fieldVideoFormat, 'MPEG2'); CurItem := Items.GetItemNamed('disques'); SetField(fieldDisks, CurItem.Properties.GetItemNamed('nbdiscs').Value); if CurItem.Items.Count > 0 then SetField(fieldMediaType, CurItem.Items.GetItem(0).Value); CurItem := Items.GetItemNamed('image'); if CurItem.Items.Count > 0 then SetField(fieldResolution, CurItem.Items.GetItemNamed('aspect_ratio').Value); if CanSetField(fieldActors) or CanSetField(fieldDirector) then GetStars(Items.GetItemNamed('stars').Items); if CanSetField(fieldCategory) then begin s1 := ''; CurItem := Items.GetItemNamed('categories'); for i := 0 to CurItem.Items.Count-1 do begin if s1 <> '' then begin if GetOption('ListeCategories') = 0 then Break else s1 := s1 + ', '; end; s1 := s1 + CurItem.Items.GetItem(i).Value; end; SetField(fieldCategory, s1); end; if CanSetField(fieldLanguages) or CanSetField(fieldAudioFormat) then GetAudioTracks(Items.GetItemNamed('audiotracks').Items); if CanSetField(fieldSubtitles) then begin CurItem := Items.GetItemNamed('soustitrage'); s1 := ''; for i := 0 to CurItem.Items.Count-1 do if CurItem.Items.GetItem(i).Properties.GetItemNamed('type').Value = 'normal' then begin if s1 <> '' then s1 := s1 + ', '; s1 := s1 + CurItem.Items.GetItem(i).Value; end; SetField(fieldSubtitles, s1); end; if CanSetField(fieldComments) then begin CurItem := Items.GetItemNamed('listeBonus'); s1 := ''; for i := 0 to CurItem.Items.Count-1 do begin s2 := StringReplace(CurItem.Items.GetItem(i).Value, #10, #13#10); s2 := Trim(StringReplace(s2, #13#13, #13)); HTMLDecode(s2); if s2 <> '' then s1 := s1 + s2 + #13#10; end; SetField(fieldComments, s1); end; s1 := Items.GetItemNamed('cover').Value; if Pos('nocover', s1) = 0 then GetPicture(s1); end; // *** rΘcupΦre les acteurs et rΘalisateurs dans la liste des stars procedure GetStars(Items: TJvSimpleXmlElems); var sActors, sDirectors: string; i: Integer; CurItem: TJvSimpleXmlElem; begin sActors := ''; sDirectors := ''; for i := 0 to Items.Count-1 do begin CurItem := Items.GetItem(i); if CurItem.Properties.GetItemNamed('type').Value = 'Acteur' then begin if sActors <> '' then sActors := sActors + ', '; sActors := sActors + CurItem.Value; end else if CurItem.Properties.GetItemNamed('type').Value = 'RΘalisateur' then begin if sDirectors <> '' then sDirectors := sDirectors + ', '; sDirectors := sDirectors + CurItem.Value; end end; SetField(fieldActors, sActors); SetField(fieldDirector, sDirectors); end; // *** rΘcupΦre les langues et formats des pistes audio procedure GetAudioTracks(Items: TJvSimpleXmlElems); var i: Integer; sFormats, sLanguages: string; CurItem: TJvSimpleXmlElem; begin sFormats := ''; sLanguages := ''; for i := 0 to Items.Count-1 do begin CurItem := Items.GetItem(i); if sFormats <> '' then sFormats := sFormats + ', '; if sLanguages <> '' then sLanguages := sLanguages + ', '; sFormats := sFormats + Trim(CurItem.Items.GetItemNamed('standard').Value + ' ' + CurItem.Items.GetItemNamed('encodage').Value); sLanguages := sLanguages + CurItem.Items.GetItemNamed('langue').Value end; SetField(fieldAudioFormat, sFormats); SetField(fieldLanguages, sLanguages); end; // *** dΘbut du programme *** begin if AcceptLicense(1) then // modifier ou retirer cette ligne revient α accepter la licence :p if CheckVersion(3,5,0) then begin MovieName := GetField(fieldTranslatedTitle); if MovieName = '' then MovieName := GetField(fieldOriginalTitle); if Input('Importation DVDFR', 'Entrez le titre du film :', MovieName) then AnalyzePage('http://www.dvdfr.com/api/search.php?title=' + UrlEncode(MovieName)); end else ShowError('Ce script requiert une version plus rΘcente de Ant Movie Catalog (au moins la version 3.5)'); end.